package com.hy.service.Impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.github.pagehelper.PageHelper;
import com.hy.base.BaseInfoProperties;
import com.hy.mapper.JobMapper;
import com.hy.mapper.JobMapperCustom;
import com.hy.pojo.Job;
import com.hy.pojo.bo.JobBO;
import com.hy.pojo.vo.JobVO;
import com.hy.service.JobService;
import com.hy.utils.PagedGridResult;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;

@Service
public class JobServiceImpl extends BaseInfoProperties implements JobService {

    @Autowired
    private JobMapper jobMapper;
    @Autowired
    private JobMapperCustom jobMapperCustom;

    /**
     * 创建或者更新职位
     * @param jobBO
     */
    @Override
    public void createOrUpdate(JobBO jobBO) {
        Job job = new Job();
        BeanUtils.copyProperties(jobBO, job);
        job.setCreateTime(LocalDateTime.now());

        if (StringUtils.isBlank(jobBO.getId())) {
            // 创建
            job.setUpdatedTime(LocalDateTime.now());
            jobMapper.insert(job);
        } else {
            // 更新
            job.setUpdatedTime(LocalDateTime.now());
            jobMapper.updateById(job);
        }
    }

    /**
     * 查询职位列表
     * @param page
     * @param pageSize
     * @return
     */
    @Override
    public PagedGridResult queryJobList(Integer page, Integer pageSize) {

        // 开启分页插件，设置当前页码和每页显示条数
        PageHelper.startPage(page, pageSize);

        // 查询所有职位信息列表
        List<JobVO> jobList = jobMapperCustom.queryJobList(null);

        // 将查询结果封装成分页结果并返回
        return setterPagedGrid(jobList, page);

    }

    /**
     * 获取职位详情
     * @param jobId
     * @return
     */
    @Override
    public Job getDetails(String jobId) {
        return jobMapper.selectById(jobId);
    }

    /**
     * 删除职位
     * @param jobId
     */
    @Override
    public void delete(String jobId) {
        jobMapper.deleteById(jobId);
    }



    /**
     * 检查指定面试官是否关联了任何职位
     *
     * @param interviewerId 面试官ID
     * @return 如果该面试官关联了职位则返回true，否则返回false
     */
    @Override
    public boolean isJobContainInterviewer(String interviewerId) {
        // 构造查询条件，根据面试官ID查询职位记录
        QueryWrapper<Job> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("interviewer_id", interviewerId);

        // 查询匹配条件的职位记录数量
        Long count = jobMapper.selectCount(queryWrapper);

        // 根据记录数量判断是否包含该面试官
        return count > 0 ? true : false;
    }

    /**
     * 获取职位名称列表
     * @return 职位名称列表
     */
    @Override
    public List<HashMap<String, String>> nameList() {

        return jobMapperCustom.queryNameList(null);
    }
}
